// 1. 需要将导入
import http from "wechat-http";

// 2. 添加 baseUrl 配置基地址
http.baseURL = 'https://live-api.itheima.net'

// 请求拦截
http.intercept.request = (params) => {
  // 1. 获取token
  const token = getApp().token
  // 2. 判断是否有token
  if (token) {
    // 给请求头添加 Authorization
    params.header = {
      Authorization: `Bearer ${token}`,
      ...params.header, // 保持其他头信息
    }
  }
  // 这里必须要有返回
  return params
}

// 3. 配置响应拦截器
http.intercept.response = async (res) => {
  // 处理业务失败的问题
  // console.log(res)
  // console.log(res.config.url);
  // console.log(res.config.url.includes('/refreshToken'));
  if (res.data.code === 401) {
    if (res.config.url.includes('/refreshToken')) {
      const currentPages = getCurrentPages()
      const lastPage = currentPages[currentPages.length - 1].route
      // 引导用户到登录页面
      return wx.redirectTo({
        url: '/pages/login/index?redirect=' + lastPage,
      })
    }
    // 代表token失效
    // wx.utils.toast('token过期')
    //删除本地存储里
    //利用 refreshToken 获取新的 token
    const app = getApp()

    //如果 app.r_token 没有 下面的代码就不要执行了
    if (!app.r_token) return
    const res2 = await http({
      url: '/refreshToken',
      method: 'post',
      header: {
        Authorization: `Bearer ${app.r_token}`
      }
    })
    // console.log(res2);
    // console.log(res2.data.token);
    // 保存新的token到本地存储
    app.setToken(res2.data.token, res2.data.refreshToken)
    //需要借助于 存储到本地传承里面的 token 发生请求
    //1.处理 请求头
    res.config.header = {
      Authorization: `Bearer ${app.r_token}`
    }
  } else if (res.data.code !== 10000) {

    wx.showToast({
      title: res.data.message,
      mask: true,
      icon: 'error'
    })
    return Promise.reject(res)
  }
  // console.log(res, 222111)
  return res.data
}

// 给 wx 全局对象添加属性
wx.http = http

// 导出
export default http